package designMode.compoundPattern;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @author LIBOFEI
 * @ClassName Flock
 * @description  一个一个鸭子管理很麻烦，所以我们要管理一群鸭子，天空一声巨响，组合模式登场
 *                组合模式允许我们像对待单个对象一样对待对象集合，，，
 * @date 2020/7/1 15:04
 * @Version 1.0
 **/
public class Flock implements Quackable {

    private List<Quackable> quackables = new ArrayList<>();

    public void add(Quackable quackable){
        quackables.add(quackable);
    }

    @Override
    public void quack() {
        /** *
         * 哦，boy，你看见吗，这是迭代器模式
        **/
        Iterator<Quackable> iterator = quackables.iterator();
        while(iterator.hasNext()){
            iterator.next().quack();
        }
    }

    @Override
    public void registerObserver(Observer observer) {
        Iterator<Quackable> iterator = quackables.iterator();
        while(iterator.hasNext()){
            Quackable duck = iterator.next();
            duck.registerObserver(observer);
        }
    }

    @Override
    public void notifyObservers() {
    }
}
